/*
 * ManejadorListaPalabras.h
 *
 *  Created on: 05/11/2010
 *      Author: julfc
 */

#ifndef MANEJADORLISTAPALABRAS_H_
#define MANEJADORLISTAPALABRAS_H_

#include <vector>
#include "ManejadorAccesoDatos.h"
#include "../diccionario/IdMailPeso.h"
#include "../coding/DeltaCoder.h"
#include "../coding/GeneradorBitset.h"

class ManejadorListaPalabras: ManejadorAccesoDatos {
public:
	ManejadorListaPalabras(char* nombreArchivo, AbrirCrearArchivo abrirCrear);

	vector<IdMailPeso> leerLista(long nroBloque, long id);
	//Devuelve el bloque en el que queda la lista.
	long escribirLista(long id, vector<IdMailPeso> lista);
	long escribirIdMailPeso(long id, IdMailPeso mailPeso);
	long actualizarLista(long id, long nroBloque, IdMailPeso mailPeso);
	bool eliminarIdDeLista(long id);
	bool eliminarIdDeBloque(long nroBloque, long id);
	string encodearDistancia(long dist);
	long decodearDistancia(string dist);
	long buscarEspacioEnBloquesLista(long tamanio);
	void inicCantidadListas();
	void setCantidadListas(long cantListas);
	long getCantidadListas();
	long calcularTamListasInternas(vector<IdMailPeso>lista, long poshasta);
	long calcularTamVector(vector<IdMailPeso> lista, long tamMax);
	virtual ~ManejadorListaPalabras();
};

#endif /* MANEJADORLISTAPALABRAS_H_ */
